 <?php
 if (!defined('APP_PATH')) {
 	define('APP_PATH', $_SERVER['DOCUMENT_ROOT']."/bdACPA");
 }
 require_once(APP_PATH.'/required.php');
 $message = '';
 if (@$_REQUEST["mode"] == "html4") {
 	if (@$_REQUEST["action"] == "cancel") {
 		$message = "Abandon";
 	} else {
 		$filename = $_FILES["file"]["name"];
  		if (isset($_REQUEST['idPuce']) && intval(htmlentities($_REQUEST['idPuce'])) != 0 ){
 			$idpuce = intval(htmlentities($_REQUEST['idPuce']));
			$puce = $PUCE_DAO->rechercher_puce($idpuce);
			$analyse ="";
			$message = "";
			$nb_erreur = $nb_cnv = 0;
			$marquePuces = $TYPEPUCE_DAO->rechercher_type_puce($puce->idtypepuce);
			$idmarquepuce = $marquePuces[0]->idmarquepuce;

			//if ( ! is_null($_POST) ){

 			// On v&eacute;rifier que le fichier a bien &eacute;t&eacute; t&eacute;l&eacute;charg&eacute;
			if ( ! isset($_FILES['file']['name']) || is_null($_FILES['file']['name']) ){
 				$message .= "Un problème est survenu lors du téléchargement du fichier de segments.";
 			} else { //v&eacute;rifier que le nom du fichier correspond bien au type de fichier segment.
//Puces Affymetrix 50k,250k,500k et 6.0
 				if ($idmarquepuce == 2){
					if ( strpos($_FILES['file']['name'], ".cn_segments") !== FALSE ){
// 						// On transforme le fichier en Ressources que l'on poste
// 						$lignes = file($_FILES['file']['tmp_name']);
		
// 						$nb_erreur = $nb_cnv = 0;
// 						$param = "";
// 						$mapd = 0;
// 						foreach ($lignes as $num => $ligne){

// 							//LECTURE DE TOUS LES PARAMETRES
// 							if ( preg_match('/^#MinimumMarkersInSegment=/', $ligne) ) {
// 								$s = split("#MinimumMarkersInSegment=", $ligne);
// 								$mmis = trim($s[1]);
// 								continue;
// 							}
// 							if ( preg_match('/^#MinimumGenomicSegmentSize=/', $ligne) ) {
// 								$s = split("#MinimumGenomicSegmentSize=", $ligne);
// 								$mgss = "-".trim($s[1]);
// 								continue;
// 							}
// 							if ( preg_match('/^#MaximumOverlapOfCNVWithSNP=/', $ligne) ) {
// 								$s = split("#MaximumOverlapOfCNVWithSNP=", $ligne);
// 								$moos = "-".trim($s[1]);
// 								continue;
// 							}
// 							if ( preg_match('/^#Arrayset=GenomeWideSNP_6/', $ligne) ) {
// 								$typepuce = 3;
// 								continue;
// 							}
// 							if ( preg_match('/^#State=', $ligne) ) {
// 								$s = split("#State=", $ligne);
// 								$analyse .= trim($s[1]);
// 								continue;
// 							}
// 							if ( preg_match('/^#Arrayset=', $ligne) ) {
// 								$s = split("#Arrayset=", $ligne);
// 								$analyse .= trim($s[1]);
// 								continue;
// 							}
// 							if ( preg_match('/^#snp-annotation-file=', $ligne) ) {
// 								$s = split("#snp-annotation-file=", $ligne);
// 								$analyse .= trim($s[1]);
// 								continue;
// 							}
// 							if ( preg_match('/^#cn-annotation-file=', $ligne) ) {
// 								$s = split("#cn-annotation-file=", $ligne);
// 								$analyse .= trim($s[1]);
// 								continue;
// 							}
// 							if ( preg_match('/^#genome=hg18/', $ligne) ) {
// 								$genome = "hg18";
// 								continue;
// 							}
// 							if ( preg_match('/^#genome=hg19/', $ligne) ) {
// 								$genome = "hg19";
// 								continue;
// 							}
// 							if ( preg_match('/^#madPairDiff=/', $ligne) ) {
// 								$s = split("#madPairDiff=", $ligne);
// 								$mapd = trim($s[1]);
// 								continue;
// 							}
// 							// On d&eacute;coupe le fichier et on instancie des AlterationChromosomique
// 							$elements = explode("\t", $ligne);
		
// 							// On v&eacute;rifie que le fichier soit un fichier de format "cn_segment" ou "cn_segment + Commentaire"
// 							if ( count($elements) != 15 && count($elements) != 16 ){
// 								continue;
// 							}
// 							$CNV = new CVN();
// 							$CNV->chromosome = $elements[3];
// 							$CNV->positiondebut = $elements[10];
// 							$CNV->positionfin = $elements[11];
// 							$CNV->sondedebut = $elements[12];
// 							$CNV->sondefin = $elements[13];
// 							$CNV->nbcopie = $elements[1];
		


// 							$result = $CNV_DAO->enregistrer_CNV($CNV);
// 							if ( $result == -1 || $result == -2){
// 								$nb_erreur++;
// 								$message .= "Erreur lors de l'enregistrement du CNV.";
// 							}else {
// 								$nb_CNV++;
// 							}
// 							unset($CNV);
// 						}
 					}//fin traitement affymetrix 50k,250k,500k et 6.0 (fichiers segment)
 				//traitement affymetrix issus de Chas
 					else if ( strpos($_FILES['file']['name'], ".tsv") !== FALSE || strpos($_FILES['file']['name'], ".txt") !== FALSE ){

// 						// On transforme le fichier en Ressources que l'on poste
// 						$lignes = file($_FILES['file']['tmp_name']);
							
// 						$param = "";
// 						$mapd = 0;
// 						$nbLigne = 0;
// 						$index =  array();
// 						foreach ($lignes as $num => $ligne){
// 							if ($nbLigne == 0){
// 								$titres = explode("\t", $ligne);
// 								$nb_titre = count($titres);
// 								for ($i = 0;$i<$nb_titre; $i++){
// 									$titre = $titres[$i];
// 									if ($titre==='CN State'){
// 										$index['cn_statut']= $i;
// 									}
// 									if ($titre==='Type'){
// 										$index['Type']= $i;
// 									}
// 									if ($titre==='Chromosome'){
// 										$index['chromosome']= $i;
// 									}
// 									if ($titre === 'Min'){
// 										$index['debut']= $i;
// 									}
// 									if ($titre === 'Max'){
// 										$index['fin']= $i;
// 									}
// 									if ($titre==='Mean Marker Distance'){
// 										$index['Mean Marker Distance']= $i;
// 									}
// 									if ($titre==='Confidence'){
// 										$index['Confidence']= $i;
// 									}
// 									if ($titre==='Marker Count'){
// 										$index['nb_marqueurs']= $i;
// 									}
// 								}
// 								//print_r($index);echo "<br/>";
// 							}

// 							else {
// 								// On d&eacute;coupe le fichier et on instancie des AlterationChromosomique
// 								$elements = explode("\t", $ligne);
		
// 								$CNV = new $CNV();
// 								if (isset($index['chromosome'])){
// 									$CNV->chromosome = $elements[$index['chromosome']];
// 								} else{
// 									$CNV->chromosome = "";
// 								}
// 								if (isset($index['debut'])){
// 									$CNV->positiondebut = str_replace ( "," , "" , $elements[$index['debut']]);
// 								} else{
// 									$CNV->positiondebut = "";
// 								}
// 								if (isset($index['fin'])){
// 									$CNV->positionfin = str_replace ("," , "" ,$elements[$index['fin']]);
// 								} else{
// 									$CNV->positionfin = "";
// 								}
// 								if (isset($index['cn_statut'])&& $elements[$index['cn_statut']] != ""){
// 									$CNV->nbcopie = $CNV[$index['cn_statut']];
// 								}
// 								if ($elements[$index['Type']]==="LCSH" || $elements[$index['Type']]==="LOH"){
// 									$CNV->nbcopie = "-100";
// 								}
// 								$CNV->sondeDebut = "";
// 								$CNV->sondeFin = "";
		
		
// 								$result = $CNV_DAO->enregistrer_CNV($CNV);
// 								if ( $result == -1 || $result == -2){
// 									$nb_erreur++;
// 									$message .= "Erreur lors de l'enregistrement du CNV.";
// 								} else {
// 									$nb_cnv++;
// 								}
// 								unset ($CNV);
// 							}
// 						$nbLigne++;
// 					}
 				}//fin traitement affymetrix 2.7
 			}//fin du traitement affymetrix

 			//traitement agilent
 			else if ($idmarquepuce==1){
 				if ( strpos($_FILES['file']['name'], ".txt") !== FALSE || strpos($_FILES['file']['name'], ".xls") === FALSE  || strpos($_FILES['file']['name'], ".csv") === FALSE ){
					if ( strpos($_FILES['file']['name'], ".csv") !== FALSE){
						$separateur = ";";
					} else {
						$separateur = "\t";
					}
					// On transforme le fichier en Ressources que l'on poste
					$lignes = file($_FILES['file']['tmp_name']);
	
					$nb_erreur = $nb_cnv = 0;
					$param = "";
					$genome = "";
					$debut = false;
					$enNbProbe = false;
					$header = null;
					$chrRef  = "";
					$startRef  = 99999999999999999999999999;
					$stopRef  = 0;
					$startProbRef  = "";
					$log2RatioRef  = 0;
					$stopProbRef   = "";
					$nb_marqueurs = 0;
	
	
					$p=0;
 					foreach ($lignes as $num => $ligne){
						$ligne = str_replace ( "\"" , "" , $ligne);
 						$ligne = trim($ligne);
						if (!$debut){
							if ( preg_match('/^Genome: hg18/', $ligne) || preg_match('/^\"Genome: hg18\"/', $ligne)) {
								$genome = "hg18";
								continue;
							} else if ( preg_match('/^Genome: hg19/', $ligne) || preg_match('/^\"Genome: hg19\"/', $ligne) ) {
								$genome = "hg19";
								continue;
							} else if ( preg_match('/^AberrationNo/', $ligne) ||  preg_match('/^Chr/', $ligne)|| preg_match('/^\"AberrationNo\"/', $ligne) ||  preg_match('/^\"Chr\"/', $ligne)||  preg_match('/^\"Chr\"/', $ligne)) {
								$pos = strpos($ligne, "#Probe");
								if ($pos === false) {
									$enNbProbe = false;
								}else {
									$enNbProbe = true;
								}
								$header = explode($separateur, $ligne);
								$index = 0;
								foreach ($header as $titrecolone){
									$titres[trim($titrecolone)] = $index;
									$index ++;
								}
								$debut = true;
								continue;
							} else if ( preg_match('/^Array Design Info:/', $ligne)  || preg_match('/^\"Array Design Info:\"/', $ligne)) {
	
							}else {
								if (trim($ligne) != null && trim($ligne) != ""){
									$analyse .= trim($ligne)."\n";
								}
								if ( preg_match('/^Aberration Filters:/', $ligne)){
									$debutstr = strpos("minProbes = ",$ligne);
									$nbProbemin = trim(substr($ligne, $debutstr+12, 2));
								}
							}
						} else {
 							if ($header != null ){
 								// On d&eacute;coupe le fichier et on instancie des cnv
 								$elements = explode($separateur, $ligne);
 								if (count($elements)>3){
 									if ($enNbProbe ){
										$CNV = new CNV();
										$CNV->idpuce = $idpuce;
										$CNV->chromosome = substr(trim($elements[$titres["Chr"]]),3);
										$CNV->positiondebut = str_replace ( "," , "" , trim($elements[$titres["Start"]]));
										$CNV->positionfin = str_replace ( "," , "" , trim($elements[$titres["Stop"]]));
										if (isset($titres["Amplification"]) ) {
											$a1 = str_replace ( "\"" , "" , trim($elements[$titres["Amplification"]]) );
											$a1 = str_replace ( "," , "." , $a1);
											if ($a1 != 0){
												$CNV->log2ratio = $a1;
											}
										}
										if (isset($titres["Deletion"]) ){
											$a2 = str_replace ( "\"" , "" , trim($elements[$titres["Deletion"]]) );
											$a2 = str_replace ( "," , "." , $a2);
											if ($a2 != 0){
												$CNV->log2ratio = $a2;
											}
										}
	
										if (isset($titres["#Gains"]) && str_replace ( "\"" , "" , $elements[$titres["#Gains"]]) == "1"){
											$CNV->nbcopie = 3;
										}
										if (isset($titres["#Gains"]) && str_replace ( "\"" , "" , $elements[$titres["#Gains"]]) == "2"){
											$CNV->nbcopie = 4;
										}
										if (isset($titres["#Losses"]) && str_replace ( "\"" , "" , $elements[$titres["#Losses"]])  == "1"){
											$CNV->nbcopie = 1;
										}
										if (isset($titres["#Losses"]) && str_replace ( "\"" , "" , $elements[$titres["#Losses"]])  == "2"){
											$CNV->nbcopie = 0;
										}
										//$CNV->nb_marqueurs = str_replace ( "\"" , "" , trim($elements[$titres["#Probes"]]));
 										$CNV->sondedebut = "";
 										$CNV->sondefin = "";
										if ($CNV->chromosome != null && $CNV->chromosome != ""){
 											$result = $CNV_DAO->ajouter_cnv($CNV);
											if ( $result != null ){
												$nb_erreur++;
												$message .= "Erreur lors de l'enregistrement du CNV : ".$result;
											} else {
												$nb_cnv++;
											}
											unset($CNV);
										}
	
	
 									} else {
// 										$chr = substr(str_replace ( "\"" , "" , $elements[$titres["ChrName"]]),3);
// 										if ($elements[$titres["Amplification"]] != null && $elements[$titres["Amplification"]] != "" && $elements[$titres["Amplification"]] != 0){
// 											$log2Ratio = trim($elements[$titres["Amplification"]]);
// 										}
// 										if ($elements[$titres["Deletion"]] != null && $elements[$titres["Deletion"]] != "" && $elements[$titres["Deletion"]] != 0){
// 											$log2Ratio = trim($elements[$titres["Deletion"]]);
// 										}
// 										if ($log2RatioRef == $log2Ratio && $chr == $chrRef){
// 											if ($elements[$titres["Start"]] < $startRef){
// 												$startRef = str_replace ( "\"" , "" , str_replace ( "," , "" , trim($elements[$titres["Start"]])));
// 												$startProbRef = str_replace ( "\"" , "" , trim($elements[$titres["ProbeName"]]));
// 											}
// 											if ($elements[$titres["Stop"]] > $stopRef){
// 												$stopRef = str_replace ( "\"" , "" , str_replace ( "," , "" , trim($elements[$titres["Stop"]])));
// 												$stopProbRef = str_replace ( "\"" , "" , trim($elements[$titres["ProbeName"]]));
// 											}
// 											$nb_marqueurs ++;
// 										} else {
// 											if ($chrRef != 0 && $chrRef != null){
// 												$CNV = new CNV();
// 												$CNV->chromosome = $chrRef;
// 												$CNV->debut =$startRef;
// 												$CNV->fin = $stopRef;
// 												$CNV->cn_statut = $log2RatioRef;
// 												$CNV->nb_marqueurs = $nb_marqueurs;
// 												$CNV->sondeDebut = $startProbRef;
// 												$CNV->sondeFin = $stopProbRef;
// 												$result = $CNV_DAO->enregistrer_cnv($CNV);
// 												if ( $result == -1 || $result == -2){
// 													$nb_erreur++;
// 													$message .= "Erreur lors de l'enregistrement du CNV.";
// 												} else {
// 													$nb_cnv ++;
// 												}
	
// 												unset($Alteration);
// 											}
// 											$chrRef = $chr;
// 											$startRef = str_replace ( "\"" , "" , trim($elements[$titres["Start"]]));
// 											$stopRef =str_replace ( "\"" , "" ,  trim($elements[$titres["Stop"]]));
// 											$log2RatioRef = $log2Ratio;
// 											$nb_marqueurs = 1;
// 											$startProbRef =str_replace ( "\"" , "" ,  trim($elements[$titres["ProbeName"]]));
// 											$stopProbRef = str_replace ( "\"" , "" , trim($elements[$titres["ProbeName"]]));
// 										}
 									}
	
 								}
							}
						}$p++;
 					} // fin foreach
// 					if ($header != null && $message == ""){
// 						if (!$enNbProbe){
// 							if ($chrRef != null && $chrRef != "0"){
// 								$CNV = new Alteration();
// 								$CNV->chromosome = $chrRef;
// 								$CNV->positiondebut =$startRef;
// 								$CNV->positionfin = $stopRef;
// 								$CNV->log2ratio = $log2RatioRef;
// 								//$CNV->nb_marqueurs = $nb_marqueurs;
// 								$CNV->sondedebut = $startProbRef;
// 								$CNV->sondefin = $stopProbRef;
// 								$result = $CNV_DAO->enregistrer_cnv($CNV);
// 								if ( $result == -1 || $result == -2){
// 									$nb_erreur++;
// 									$message .= "Erreur lors de l'enregistrement du CNV.";
// 								}else {
// 									$nb_cnv++;
// 								}
// 								unset($Alteration);
// 							}
// 						}
// 					}
				}
			}//fin du traitement des fichier intervalle based report

// 			//mise à jour des données de la puce
// 			if ($message == ""){
// 				if ($idmarquepuce == 2){
// 					$puce->taillemin = $mgss;
// 					$puce->nbmqdeviant = $mmis;
// 					$puce->qualite = $puce->qualite."MAPD =".$mapd;
// 					$puce->versionhg = $genome;
// 					$puce->analyse = $puce->analyse.$analyse;
// 					// 				if ($sexePuce != "M" && $sexePuce != "F"){
// 					// 					$sexePuce = "?";
// 					// 				}
// 					//				$puce->sexePuce = $sexePuce;
// 					$idp = $PUCE_DAO->enregistrer_puce($puce);
	
// 				}else if ($idmarquepuce == 1){
// 					$puce->nbmqdeviant = $nbProbemin;
// 					$puce->versionhg = $genome;
// 					$puce->analyse = $puce->analyse.$analyse;
// 					$idp = $PUCE_DAO->enregistrer_puce($puce);
// 				}
// 				if($idp < 0 ){
// 					$message.= "Erreur lors de la mise à jour des données de la puce.<br/>";
// 				}
// 			}
// 		// On supprime le fichier de segments
// 			unlink($_FILES['Fichier']['tmp_name']);
// 			$message .= "$nb_cnv CNV ont enregistrés ($nb_erreur erreur(s))<br />\n";
 		} // Fin traitement du fichier
 		} // Fin de si id puce 
 		else {
 			$message .="pas d'idPuce";	
		}
	}//fin de pas cancell

} // fin de pas html4
else {
 			$message .="pas html4";	
		}
print_r("{state: true, name:'".$message."', size:".$_FILES["file"]["size"]."}");

?>

